package FutSal.controladores;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;

import FutSal.modelo.Clientes;

public class AdmClientes {

	 private ArrayList<Clientes> dbClientes = new ArrayList<Clientes>();
	    private String sRutaBD = "clientes.txt";
	    //private String sRutaBD = "Clientes.txt";

	    public ArrayList<Clientes> inicializarTablaCliente() {
	        FileReader fr = null;
	        BufferedReader br = null;
	        
	        try {
	            fr = new FileReader(sRutaBD);
	            br = new BufferedReader(fr);
	            String linea;
	            
	            Clientes cliente = null;
	            while ((linea = br.readLine()) != null) {
	                String [] datos = linea.split("#");
	                cliente = new Cliente(datos[0], datos[1], datos[2], datos[3],
	                		datos[4], datos[5], datos[6], datos[7], datos[8], datos[9], 
	                		datos[10], datos[11], datos[12], datos[13], datos[14], datos[15], datos[16]);
	                dbClientes.add(cliente);
	            }
	            
	        } catch (FileNotFoundException e){
	            e.printStackTrace();
	        } catch (IOException e) {
	            e.printStackTrace();
	        } finally {
	            try {
	                if (null != fr) {
	                    fr.close();
	                } 
	            } catch (Exception ee){
	                ee.printStackTrace();
	            }
	        }
	        
	        return dbClientes;
	    }
	    
	        public int ingresarCliente(Cliente cliente){
	        int entrega = 0; // fracaso
	        if(existeCliente(cliente) == false){
	            if(existeDatosEnBlanco(cliente) == false) {
	                dbClientes.add(cliente);
	                entrega = 1; // exito
	                actualizaTablaCliente();
	            }
	        }
	        return entrega; 
	    }

	    private boolean existeCliente(Cliente cliente) {
	        boolean existeCliente = false;
	        for (Cliente clienteDB : dbClientes){
	            if (clienteDB.getDni().equals(cliente.getDni()) 
	             && clienteDB.getEmail().equals(cliente.getEmail())){
	                existeCliente = true;
	            }
	        }
	        return existeCliente;
	    }

	    private boolean existeDatosEnBlanco(Cliente cliente) {
	        boolean existeblanco = false;
	        if(cliente.getEmail().equals("")
	        || cliente.getFechaNac().equals("")) {
	            existeblanco = true;
	        }
	        return existeblanco;
	    }

	    public boolean validaClaves2Veces(Cliente cliente, String clave2) {
	        boolean ok = false;
	        if(cliente.getClave().equals(clave2) ) ok = true;
	        return ok;
	    }

	    private void actualizaTablaCliente() {
	        try {
	            PrintWriter pw = new PrintWriter(new FileWriter(sRutaBD));
	            for( Cliente clienteDB : dbClientes){
	                pw.println(clienteDB.getCodigo() + "#"
	                         + clienteDB.getDni() + "#"
	                         + clienteDB.getNombres() + "#"
	                         + clienteDB.getEmail() + "#"
	                         + clienteDB.getFechaNac() + "#"
	                         + clienteDB.getClave() + "#");
	            }
	            pw.close();
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }

	    }

	
}
